home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / xmodem.arc / RET.MAC < prev    next >
Text File  |  1985-06-15  |  2KB  |  122 lines

  1. ; ***********************************************
  2. ; RET_HL C-to-Machine interface.
  3. ; Call from C as:
  4. ;
  5. ; ret_hl( addr, a, bc, de, hl )
  6. ;    unsigned addr, bc, de, hl;
  7. ;    char a;
  8. ;
  9. ; Returns value in HL after machine call.
  10.     .Z80
  11.     CSEG
  12. RET?HL::
  13.     ADD    HL,SP        ; required for C
  14.     PUSH    HL        ; required for C
  15.  
  16.     LD    HL,4        ; access parameters,
  17.     ADD    HL,SP        ; starting w/ addr
  18.     LD    DE,EXIT1    ; Setup return addr
  19.     PUSH    DE
  20. ; ADDR
  21.     LD    E,(HL)
  22.     INC    HL
  23.     LD    D,(HL)
  24.     INC    HL
  25.     PUSH    DE
  26. ; A
  27.     LD    D,(HL)
  28.     INC    HL
  29.     INC    HL
  30.     PUSH    DE
  31. ; BC
  32.     LD    E,(HL)
  33.     INC    HL
  34.     LD    D,(HL)
  35.     INC    HL
  36.     PUSH    DE
  37. ; DE
  38.     LD    E,(HL)
  39.     INC    HL
  40.     LD    D,(HL)
  41.     INC    HL
  42.     PUSH    DE
  43. ; HL
  44.     LD    E,(HL)
  45.     INC    HL
  46.     LD    D,(HL)
  47.     EX    DE,HL
  48. ;
  49.     POP    DE        ; Load DE
  50.     POP    BC        ; Load BC
  51.     POP    AF        ; Load AF
  52. ;
  53.     RET            ; Jump to ADDR
  54. EXIT1:
  55.     JP    $RTNI##        ; Returns value in HL
  56. ;
  57. ; ***********************************************
  58. ; RET_A C-to-Machine interface.
  59. ; Call from C as:
  60. ;
  61. ; ret_A( addr, a, bc, de, hl )
  62. ;    unsigned addr, bc, de, hl;
  63. ;    char a;
  64. ;
  65. ; Returns value in A after machine call.
  66.     .Z80
  67.     CSEG
  68. RET?A::
  69.     ADD    HL,SP        ; required for C
  70.     PUSH    HL        ; required for C
  71.  
  72.     LD    HL,4        ; access parameters,
  73.     ADD    HL,SP        ; starting w/ addr
  74.     LD    DE,EXIT2    ; Setup return addr
  75.     PUSH    DE
  76. ; ADDR
  77.     LD    E,(HL)
  78.     INC    HL
  79.     LD    D,(HL)
  80.     INC    HL
  81.     PUSH    DE
  82. ; A
  83.     LD    D,(HL)
  84.     INC    HL
  85.     INC    HL
  86.     PUSH    DE
  87. ; BC
  88.     LD    E,(HL)
  89.     INC    HL
  90.     LD    D,(HL)
  91.     INC    HL
  92.     PUSH    DE
  93. ; DE
  94.     LD    E,(HL)
  95.     INC    HL
  96.     LD    D,(HL)
  97.     INC    HL
  98.     PUSH    DE
  99. ; HL
  100.     LD    E,(HL)
  101.     INC    HL
  102.     LD    D,(HL)
  103.     EX    DE,HL
  104. ;
  105.     POP    DE        ; Load DE
  106.     POP    BC        ; Load BC
  107.     POP    AF        ; Load AF
  108. ;
  109.     RET            ; Jump to ADDR
  110. EXIT2:
  111.     LD    L,A        ; transer
  112.     LD    H,0
  113.     JP    $RTNI##        ; Returns value in HL
  114.     END
  115. 
  116.     POP    AF        ; Load AF
  117. ;
  118.     RET            ; Jump to ADDR
  119. EXIT2:
  120.     LD    L,A        ; transer
  121.     LD    H,0
  122.     JP    $RTNI##        ;